package com.ulic.customerManApplication.util.time;

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;

public class TimerManager {

	private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
	 
	 public TimerManager() { 

	  Calendar calendar = Calendar.getInstance();  
	        
	  /*** 定制每日9:00启动发送短信和邮件的生日祝福语 ***/  

	  calendar.set(Calendar.HOUR_OF_DAY, 9);
	  calendar.set(Calendar.MINUTE, 00);
	  calendar.set(Calendar.SECOND, 0);
	  
	  Date date=calendar.getTime(); //第一次执行定时任务的时间
	  
	  //如果第一次执行定时任务的时间 小于 当前的时间
	  //此时要在 第一次执行定时任务的时间 加一天，以便此任务在下个时间点执行。如果不加一天，任务会立即执行。
	  if (date.before(new Date())) {
	      date = this.addDay(date, 1);
	  }
	  
	  Timer timer = new Timer();
	  
	  NFDFlightDataTimerTask task = new NFDFlightDataTimerTask();
	  timer.schedule(task,date,PERIOD_DAY);
	  
	  
	  
	  
	  
	  
	  Calendar calendar2 = Calendar.getInstance();  
      
	  /*** 定制每日23:00启动加载机构树的任务 ***/  

	  calendar2.set(Calendar.HOUR_OF_DAY, 23);
	  calendar2.set(Calendar.MINUTE, 00);
	  calendar2.set(Calendar.SECOND, 0);
	  
	  Date date2=calendar2.getTime(); //第一次执行定时任务的时间
	  
	  //如果第一次执行定时任务的时间 小于 当前的时间
	  //此时要在 第一次执行定时任务的时间 加一天，以便此任务在下个时间点执行。如果不加一天，任务会立即执行。
	  if (date2.before(new Date())) {
		  date2 = this.addDay(date2, 1);
	  }
	  NFDFlightDataTimerTaskLoadTree loadTreeTask = new NFDFlightDataTimerTaskLoadTree();
	  //安排指定的任务在指定的时间开始进行重复的固定延迟执行。
	  timer.schedule(loadTreeTask,date2,PERIOD_DAY);
	 }

	 // 增加或减少天数
	 public Date addDay(Date date, int num) {
	  Calendar startDT = Calendar.getInstance();
	  startDT.setTime(date);
	  startDT.add(Calendar.DAY_OF_MONTH, num);
	  return startDT.getTime();
	 }
	 

}
